inspector: do not leak seat capabilities descriprion
authorPaolo Borelli <pborelli@gnome.org>
Sun, 24 Apr 2016 09:46:38 +0000 (11:46 +0200)
committerPaolo Borelli <pborelli@gnome.org>
Sun, 24 Apr 2016 15:49:26 +0000 (17:49 +0200)
Factor out an utility function for readability and free the string
with the list of capabilities

gtk/inspector/general.c

index b00a01e3d3c169166bbe4bfd309aacd4ceba76e6..7699c1035d389c98fb8e784a8415dccf5467c49c 100644 (file)
@@ -452,12 +452,9 @@ add_device (GtkInspectorGeneral *gen,
     }
 }
 
-static void
-add_seat (GtkInspectorGeneral *gen,
-          GdkSeat             *seat,
-          int                  num)
+static char *
+get_seat_capabilities (GdkSeat *seat)
 {
-  GdkSeatCapabilities capabilities;
   struct {
     GdkSeatCapabilities cap;
     const char *name;
@@ -469,18 +466,8 @@ add_seat (GtkInspectorGeneral *gen,
     { 0, NULL }
   };
   GString *str;
-  char *text;
+  GdkSeatCapabilities capabilities;
   int i;
-  GList *list, *l;
-
-  if (!g_object_get_data (G_OBJECT (seat), "inspector-connected"))
-    {
-      g_object_set_data (G_OBJECT (seat), "inspector-connected", GINT_TO_POINTER (1));
-      g_signal_connect_swapped (seat, "device-added", G_CALLBACK (populate_seats), gen);
-      g_signal_connect_swapped (seat, "device-removed", G_CALLBACK (populate_seats), gen);
-    }
-
-  text = g_strdup_printf ("Seat %d", num);
 
   str = g_string_new ("");
   capabilities = gdk_seat_get_capabilities (seat);
@@ -494,9 +481,31 @@ add_seat (GtkInspectorGeneral *gen,
         }
     }
 
-  add_label_row (GTK_LIST_BOX (gen->priv->device_box), text, str->str, 0);
+  return g_string_free (str, FALSE);
+}
+
+static void
+add_seat (GtkInspectorGeneral *gen,
+          GdkSeat             *seat,
+          int                  num)
+{
+  char *text;
+  char *caps;
+  GList *list, *l;
+
+  if (!g_object_get_data (G_OBJECT (seat), "inspector-connected"))
+    {
+      g_object_set_data (G_OBJECT (seat), "inspector-connected", GINT_TO_POINTER (1));
+      g_signal_connect_swapped (seat, "device-added", G_CALLBACK (populate_seats), gen);
+      g_signal_connect_swapped (seat, "device-removed", G_CALLBACK (populate_seats), gen);
+    }
+
+  text = g_strdup_printf ("Seat %d", num);
+  caps = get_seat_capabilities (seat);
+
+  add_label_row (GTK_LIST_BOX (gen->priv->device_box), text, caps, 0);
   g_free (text);
-  g_string_free (str, FALSE);
+  g_free (caps);
 
   list = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_ALL);